Create your flash banner free online
UNIX و SOLARIS مدیریت حافظه در

UNIX و SOLARIS مدیریت حافظه در

سیستم عامل ماشینهای IBM 360 نمونه خوبی در این مقوله است. سیستم عاملی که توان شبیه سازی تقریبا تمامی سیستم های عرضه شده تا قبل از خود را داشت و فهرست اشکالات آن یک دفتر به قطر دفتر راهنمای تلفن را تشکیل می داد! ساختارهای اطلاعاتی غول آسا سیستم های ذخیره سازی پرونده بسیار پیچیده زبانهای برنامه نویسیی چون پی ال وان و کوبول که کاربران را تنها در یک سو جهت می داد و در کل دیکتارتوری IBM که هر استفاده کننده ای را در شبکه ایغول آسا اسیر می کرد. تیم های برنامه نوسی IBM  که چون خدایان غیر قابل دسترسی بودند و همه جا با احترام درباره آنها صحبت می شد. چیزی که هیچ کس حتی جرات فکر کردن درباره آن را نمی کرد اصلاح در کاری بود که IBM و دیگر پیروان آن عرضه می کردند. دورانی که یک برنامه نوسی حرفه ای سیستم، مدت زمان درازی را فقط برای یادگیری سیستم عامل صرف می کرد و با احساس شرم اشکالات سیستم عامل را اگر از کم هوشی خود نمی دانست به IBM اطلاع می داد. چه بسیار برنامه های بزرگ تجاری که دوباره نویسی می شدند، زیرا سیست معامل امکان اتصال برنامههای دیگر را به آنها نمی داد.


به هر حال یونیکس وارد بازار شد. سیستم عاملی که همه چیز در آن به هم شبیه بود، نحوه چاپ روی چاپگر نوشتن روی صفحه پایانی ویا ذخیره اطلاعات در پرونده ها همه و همه به یک صورت انجام می پذیرفت. و از همه مهمتر لیست برنامه سیستم عامل را در هر کتابخانه ای می شد پیدا کرد. برنام های یونیکس به راحتی می توانند ورودی و خروجی خود را به برنامه های دیگر بدهند و بدین صورت هیچگاه نیازی به برنامه های غول آسا پیدا نمی شود. هر سیستمی هر چقدر هم پیچیده باشد می تواند از مجموعه از برنامه های کوچک به وجود آید که ورودی و خروجی خود را به یکدیگر متصل نموده اند.

 

برای به دست آوردن دیدی کلی از یونیکس، شناخت عوامل زیر ضروری است:

1- پیکر بندی سیستم عامل: هسته مرکزی سیستم  عامل یونیکس جز کوچکی از آن را تشکیل می دهد ولی ای جز از اهمیت اساسی برخوردار استکه رابط کاربر و سیستم  عامل می باشد و در شکل 1 مشهود است.

این ساختار کلی شبیه به ساختار PC-DOS است. Kernal یا هسته مرکزی در آنجا از دو پرونده IBMBIO.sys و IBMDOS.sys تشکیل می شود و پیوست پرونده ای به نام command.com است. تفاوت در ویژگیهای هسته مرکزی و قدرت بسیار بیشتر پوسته های یونیکس است. اولا هر سیستم  یونیکس دارای چند پوسته است که کاربر می تواند هر کدام را که بخواهد انتخاب کند. (پوسته استاندارد، پوسته محدود، پوسته تصویری، پوسته C، پوسته UUCP) هر کدام از این پوسته ها قابلیت های متفاوتی دارند.

یونیکس ار روش انتقال به دورن، و انتقال به بیرون نیز استفاده می کند. در این روش اگر حجم پرونده در حال اجرا بیش از ظرفیت حافظه ماشین باشد . مقداری از محتویات حافظه به دیسک سخت منتقل می شود و حافظه را در اختیار پرونده درحال اجرا قرار می دهد . پس از اتمام پرونده یا پایان نوبت آن محتویات منتقل شده دوباره به حافظه باز می گردند. این روش به یونیکس اجازه می دهد پرونده هایی بزرگتر از حجم حافظه اصلی سیستم  را در آن واحد اجرارکند.

یونیکس برای برقراری ارتباط بین عملیات مختلف سیستم  روشهای بسیار جالبی را در اختیار کاربران قرار می دهد. استفاده از حافظه به اشتراک گذارده شده، خط لوله ها کنترل کنندههای خط و انتقال پیام از روشهایی هستند که دو یا چند برنامه درحال اجرا می توانند با هم ارتباط برقرار کنند.

 

مدیریت حافظه در UNIX و SOLARIS

از آنجا که قرار است یونیکس مستقل از ماشین باشد، طرح مدیریت حافظه از سیستمی به سیستم  دیگر فرق می کند. گونه های اولیه یونیکس به طور ساده از بخش بندی پویا و بدون هیچ طرح حافظه مجازی استفاده می کردند. پیاده سازیهای کنونی، از جمله SVR4 و solaris 2x از حافظه مجازی صفحه بندی شده سود می برند.

در svr4 و solaris در واقع دو طرح مدیریت حافظه مجزا وجود دارد. سیستم  صفحه بندی حافظه مجازی را ارائه می کند. قابلیتی که می تواند قاب صفحه های حافظه اصلی را به فرایندها و همچنین میانگین های بلوک دیسک تخصیص دهد اگر چه این طرح مدیریت حافظه مجازی برای فرایندهای کاربرد و ورودی / خروجی دیسک موثر است ولی برای مدیریت تخصیص حافظه به هسته سیستم  عامل چندان مناسب نیست. برای این از تخصیص دهنده حافظه هسته استفاده می شود. این دو راهکار را به نوبت بررسی می کنیم.

 

سیستم  صفحه بندی

ساختمان داده ها

برای حافظه  مجازی صفحه بندی شده یونیکس از تعدادی ساختمان داده سود می برد، که با مختصر تغییری، مستقل از ماشین هستند.

-    جدول صفحه : نوعا برای هر فرایند یک جدول صفحه وجود دارد که برای هر صفحه آن فرایند در حافظه  مجازی یک مدخل در نظر گرتفه می شود.

-    توصیفگر بلوک دیسک: برای هر صفحه فرایند یک مدخل در این جدول وجود دارد، که نسخه دیسک از آن صفحه مجازی را توصیف می کند.

-    جدول داد های قاب صفحه : قابهای حافظه اصلی را توصیف می کند و شاخص آن شماره قاب است.

-    جدول استفاده مبادله: برای هر دستگاه مبادله، یک جدول استفاده مبادله، با یک مدخل برای هر صفحه روی آن دستگاه وجود دارد.

 

شماره قاب صفحه

سن

کپی در نوشتن

تغییر

مراجعه

اعتبار

حفاظت

 

شماره دستگاه مبادله

شماره بلوک دستگاه

نوع حافظه 

 

حالت صفحه

شمارش مراجعه

دستگاه منطقی

شماره بلوک

اشاره گر داد های قاب صفحه

 

شمارش مراجعه

شماره واحد صفحه / حافظه 

 

اغلب حوزه های معرفی شده در جدول ؟ خود را توصیف می کنند. فقط تعداد کمی از آنها نیازمند توضیح هستند. حوزه سن در مدخل جدول صفحه نشان دهنده این است که چه مدت از مراجعه یک برنامه به این قاب می گذرد. اما تعداد بیتها و بسامد بهنگام سازی این حوزه بستگی به بپیاده سازی دارد. پس استفاده از این حوزه برای سیاست جایگزینی صفحه در پیاده سازی های مختلف یونیکس یکسان نیست.

 

حوزه نوع ذخیره در بلوک توصیفگر دیسک به دلایل زیر لازم است: زمانی که یک پرونده قابل اجرا برای اولین بار به کار گرفهت می شود تا فرایند جدیدی ایجاد گردد، تنها بخشی از برنامه و داده ها ممکن است در حافظه  اصلی بار شوند. بعدا با بروز خطاهای فقدان صفحه بخشهای جدیدی از برنامه و داده ها بار می شوند. فقط در زمان بار کردن اولیه است که صفحه های حافظه مجازی ایجاد می شوند و به مکانهایی روی یکی از دستگاهها، برای استفاده درمبادله مشخص می گردند. در آن زمان به سیستم  عامل گفته می شود که آیا نیازی به پاک کردن مکانهای قاب صفحه قبل از بار کردن اولیه بلوک داده یا برنامه وجود دارد یا خیر.

 

جایگزینی صفحه

از جدول دادهای قاب صفحه برای جایگزینی صفحه استفاده می شود. اشاره گرهای متعددی برای به وجود آوردن لیستهای در داخل این جدول به کار گرفته می شوند.

مدخل جدول صفحه

 

شماره قاب صفحه

به قاب داخل حافظه حقیق اشاره دارد

سن

اینکه چه مدت صفحه بدون مراجعه در حافظه  بوده است را نشان می دهد. طول و محتوای این حوزه وابسته به پردازنده است.

کپی در نوشتن

هنگامی که بیش از یک فرایند در یک صفحه شریک باشند، بر پا می گردد. اگر یکی از فرایند ها به داخل صفحه بنویسد، ابتدا باید یک کپی جداگانه برای کلیه فرایندهایی که دراین صفحه شریک هستند درست شود. این خصوصیت باعث می شود تا عمل کپی تازمانی که لازم باشد به تعویق بیفتد و در مواردی که لازم نیست ، انجام نشود.

تغییر

مبین تغییر صفحه است.

مراجعه

نشان می دهد که به صفحه مراجعه شده است. این بیت در اولین بار شدن صفحه صفر می شود و می تواند متناوبا توسط الگوریتم جایگزینی صفحه مقداردهی شود.

اعتبار

نشان می دهد که صفحه داخل حافظه  اصلی است.

حفاظت

نشان می دهد که آیا عمل نوشتن مجاز است.

 

توصیفگر بلوک دیسک

شماره دستگاه مبادله

شماره منطقی دستگاه ثانوی که صفحه مزبور را نگهداری می کند. به این ترتیب می توان بیش ازیک دستگاه را برای تعویض به کار برد.

شماره بلوک دستگاه

مکان بلوک صفحه بر روی دستگاه مبادله

نوع حافظه

حافظه  می تواند واحد مبادله یا پرونده قابل اجرا باشد در مورد دوم نشانه این است که آیا حافظه  مجازی تخصیص یافته باید ابتدا پاک شود یا خیر

 

مدخل جدول داده های قاب صفحه

حالت صفحه

نشان می دهد که آیا این قاب ازاد یا صفه ای به آن مربوط شده است. در مورد دوم، وضعیت صفحه مشخص می گردد. بر روی دستگاه مبادله در پرونده قابل اجار یا DMA در حال اجرا.

شمارش مراجعه

تعداد فرایندهایی که به صفحه مراجعه می کنند.

دستگاه منطقی

دستگاه منطقی که حاوی یک کپی از صفحه است.

شماره بلوک

مکان بلوک کپی صفحه بر روی دستگاه منطقی

اشاره گر داده های قاب صفحه

اشاره گر به دیگر مدخلهای جدول دادهای قاب صفحه در ایست صفحه های آزاد و صف درهم صفحه ها.

 

مدل جدول استفاده مبادله

شمارش مراجعه

شماره مدخلهای جدول صفحه که به صفحه ای بر روی دستگاه مبادله اشاره می کنند.

شماره واحد صفحه / حافظه 

شناسه صفحه بر روی واحد حافظه 

 

تمامی قابهای موجود در لیستی از قابهای آزاد موجود برای آوردن صفحه ها به یکدیگر پیوند خورده اند. هنگامی که تعداد صفحه های موود از آستانه مشخصی کمتر شود هسته سیستم  عامل برای جبران تعدادی از صفحه ها را می رباید.

الگوریتم جایگزینی صفحه مورد استفاده در svr4  بهبود یافته الگوریتم سیاست ساعت است که به نام الگوریتم ساعت دو عقربه ای شناخته می شود. الگوریتم مزبور بیت مراجعه در مدخل جدول صفحه را برای هر صفحه ای که در داخل حافظه  واجد شرایط مبادله به خارج باشد. به کار می برد.زمانی که برای اولین بار صفحه به داخل حافظه  بار می شود این بیت 0 می باشد و هر گاه صفحه برای خواندن یا نوشتن مورد مراجعه قرار گیرد 1 می گردد. یک عقربه در الگوریتم ساعت لیست صفحه های واد شرایط را مرور عقربه جلویی مورد مراجعه واقع شده است. از این گونه قابها صرفنظر می شود. اگر بیت مزبور هنوز 0 باشد، به این معنی است که در فاصله زمانی بین ملاقات عقربه جلویی و عقربه عقبی به صفحه مزبور مراجعه نشده است. این صفحه ها در لیست مبادله به خارج قرار می گیرند. دو پارامر عملکرد این الگوریتم را تعیین می کنند.

-    نرخ مرور: نرخی که بر اساس آن دو عقربه لیست صفحه ها را برحسب صفحه در ثانیه مرور می کنند.

-    فاصله عقربه ها: فاصله مابین عقربه جلویی و عقربه عقبی.

 

مقادیر پیش فرض این دو پارامتر بر اساس مقد ار حافظه  فیزیکی در زمان راه اندازی تعیین می گردد. می توان پارامتر نرخ مرور را با تغییر شرایط عوض نمود. این پارامتر به طور خطی بین مقادیر slowscan و fastscan با تغییر مقدار حافظه  آزاد که بین دو مقدارlotsfree و minfree است. تغییر می کند. به عبارت دیگر با کوچک شدن مقدار حافظه  آزاد عقربه های ساعت با سرعت بیشتری حرکت می کنند تا صفحه های بیشتری را آزاد نمایند. پارامتر فاصله عقربه ها همراه با پارامتر نرخ مرور، چهارچوب فرصت استفاده  از یک صفحه مشخص می سازد.

 

تخصیص دهنده حافظه  هسته

هسته سیستم  عامل در طی ارجای خود جداول و میانگین های کوچکی را مرتبا ایجاد می کند واز بین می برد، که نیازمند تخصیص پویای حافظه  است. مثالهای زیر را فهرست کرده است:

-    ممکن است برای ترجمه نام مسیر، میانگیری جهت کپی کردن نام مسیر ی از فضای کاربرد تخصیص داده شود.

-    روال allocb میانگیر های Streams با اندازه دلخواه را تخصیص می دهد.

-    بسیاری از پیاده سازیهای  یونیکس برای نگهداری وضعیف خروج و اطلاعات منابع مورد استفاده فرایندهای از بین رفته، ساختارهای جادویی را تخصیص می دهند.

-    در svr4 و solaris هسته سیستم  عامل شی های بسیاری را برحسب نیاز تخصیص می دهد.

-    بسیار از این بلوکها به طور قابل ملاحظه ای کوچکتر از اندازه صفحه های معمول ماشین هستند در نتیجه راهکار صفحه بندی برای تخصیص پویای حافظه  هسته سیستم  عامل ناکارآمد است. در svr4 نوع بهبود یافته ای از سیستم  رفاقتی به کار می رود.

 

در سیستم  رفاقتی بهای تخصیص و آزاد سازی یک بلوک حافظه  در مقایسه با سیاستهای بهترین برازش یا اولین برازش کم است.اما در مورد مدیریت حافظه  هسته سیستم  عامل عملیات تخصیص و آزاد سازی باید با بیشترین سرعت ممکن انجام گیرد. اشکال سیستم  رفاقتی زمان لازم جهت تکه تکه سازی و تلفیق بلوکهاست.

Barkley و lee در AT&T نوع دیگری از سیستم  رفاقتی به نام سیستم  رفاقتی تنبل را پیشنهاد کردند که همین روش برای svr4 پذیرفته شده است. مولفین آن مقاله مشاهده کردند که اکثرا یونیکس رفتار پایداری برای تقاضای حافظه  هسته سیستم  عامل از خود بروز می دهد. یعنی مقدار تقاضا برای بلوکهای با اندازه مشخص تغییرات کندی در طول زمان دارند. پس اگر بلوکی با اندازه 2 آزاد گردد و بلافاصله با رفیقش در لوکی با اندازه  ؟ تلفیق شود. احتمالا هسته سیستم  عامل در تقاضا بعدی خود در خواست اندازه 2I را می کند. که نیازمند تقسیم دوباره بلوک بزرگتر است. برای اجتناب از این تلفیق و تقسیم غیر ضروری، سیستم  رفاقتی تنبل، تلفیق را تا زمانی که به آن نیاز نباشد به تعویق می اندازد و سپس تا آنجا که ممکن است بلوکهای را با یکدیگر تلفیق می کند.

سیستم  رفاقتی تنبل از پارامترهای زیر استفاده می کند:

NI = تعداد کنونی بلوکهای با اندازه 2I

AI= تعداد کنونی بلوکهای با اندازه 2I که تخصیص یافته اند.

GI= تعداد کنونی بلوکهای با اندازه 2I  که به طور سراسری آزاد  هستند. این بلوکها واجد شرایط تلفیق می باشند اگر رفیق چنین بلوکی به طور سراسری آزاد گردد، سپس دو بلوک، در بلوکی با اندازه 2I+1  که به طور سراسری آزاد است تلفیق می شوند. می توان کلیه بلوکهای آزاد در سیستم  رفاقتی استاندارد را به طور سراسری آزاد در نظر گرفت.

LI تعداد کنونی بلوکهای با اندازه 2I  که به طور محلی آزاد هستند. اینها بلوکهایی هستند که واجد شرایط تلفیق نیستند. حتی اگر رفیق چنین بلوکی آزاد گردد، دو بلوک تلفیق نمی شوند، در عوض، بلوکهای آزاد محلی به انتظار در خواستهای آینده برای بلوکهایی با همان اندازه نگهداری می شوند.

رابطه زیر برقرار است:

NI=AI+GI+lI

 

به طور کلی سیستم  رفاقتی تنبل سعی در نگهداری مجموعه ای از بلوکهای آزاد محلی دارد و فقط زمانی عمل تلفیق را انجام می دهد که تعداد بلوکهای آزاد محلی از یک حد آستانه بیشتر گردد. اگر تعداد زیادی بلوکهای آزاد محلی موجود باشند، این احتمال وجود دارد که برای ارضای تقاضاهای سطح بعدی، کمبود بلوکهای آزاد مطرح باشد. در اغلب مواقع هنگامی که بلوکی آزاد می شود تلفیق انجام نمی گیرد. در نتیجه بهای نگهداری سابقه و عملات به حداقل می رسد. هنگامی که بنا باشد بلوکی تخصیص یابد، تفاوتی بین بلوکهای آزاد محلی یا سراسری نیست، این نیز عمل نگهداری سابقه را تقلیل می دهد.

معیاری که برای تلفیق به کار می رود این است که تعداد بلوکهای آزاد محلی و با اندازه مشهص نبایستی از تعداد بلوکهای تخصیص یافته با همان اندازه بیشتر شود. این رهنمودی منطقی برای محدود ساختن رشد بلوکهای آزاد محلی است و تجربی تایید می کنند که این طرح صرفه جویی قابل توجهی را موجب می باشد.

برای پیاده سازی این طرح مولفین مقاله یک متغیر تاخیر را به صورت زیر تعریف کرده اند:

DI=AI- LI = NI – 2LI - GI

 

مقدار اولیه DI  برابر صفر است

پس از یک عمل مقدار DI  به صورت زیر بهنگام می شود.

 

الف) اگر عمل بعدی یک درخواست تخصیص بلوک باشد:

اگر بلوک آزاد موجودباشد، یکی را برای تخصیص انتخاب می کند:

اگر بولک تخصیص یافته به طور محلی آزاد باشد،

آنگاه                               DI:= DI+2

وگرنه                              Di:=DI+1

در غیر این صورت

ابتدا از طریق تقسیم یک بلوک بزرگتر دو بلوک به دست می آورد که یکی از تخصیص داده و دیگری را به عنوان آزاد محلی علامت می زند.

D­I بدون تغ

نظرات شما عزیزان:

نام :
آدرس ایمیل:
وب سایت/بلاگ :
متن پیام:
:) :( ;) :D
;)) :X :? :P
:* =(( :O };-
:B /:) =DD :S
-) :-(( :-| :-))
نظر خصوصی

 کد را وارد نمایید:

 

 

 

عکس شما

آپلود عکس دلخواه:





مطالب قبلي





Copyright © 2009-20010 Loxblog.com All Rights Reserved . Designed by Loxblog.com

amoozesh-osn

سید امیر محمد میرصفی

amoozesh-osn

http://amoozesh-osn.loxblog.com

وبلاگ تخصصی سیستم عامل شبکه

UNIX و SOLARIS مدیریت حافظه در

وبلاگ تخصصی سیستم عامل شبکه

به وبلاگ من خوش آمدید .:Operation System Net:.

وبلاگ تخصصی سیستم عامل شبکه

ابزار پرش به بالا